/**
 * 
 */
package com.aceitunaproject.webclient.client;


import com.aceitunaproject.shared.gamelement.Unit;
import com.aceitunaproject.shared.map.MapTile;

/**
 * Classes that implement this interface are used as the main AceitunaClient classes.
 * 
 * @author Federico Bergstein
 *
 */
public interface MainAceitunaClient {

	/**
	 * Sets the client id in the server's Aceituna web client manager
	 * @param clientId the client id to set
	 */
	void setClientId(String clientId);
	
	/**
	 * Gets the client id for this client instance in the server's Aceituna web client manager
	 *
	 * @return the client id for this client instance in the server's Aceituna web client manager
	 */
	String getClientId();
	
	/**
	 * Gets the aceituna service reference.
	 * @return the aceituna service reference.
	 */
	AceitunaServiceAsync getAceitunaService();
	
	/**
	 * To be called when the user has successfully logged in
	 * @param userName the username of the user
	 */
	void UserLoggedIn(String userName);

	void orderedToRefreshMap();

	void orderedToCancel();

	void orderedToBuildSettlement();

	void orderedToBuildInstallation();

	void orderedToAttackWithUnit();

	void orderedToBuildUnit();
	
	void orderedToMoveUnit();


	void MoveUnit(Unit selectedUnit, MapTile mapTile);
	
	EnumOrder getOrderInProgress();
}
